拍脑袋估算法
拍脑袋估算法
定义:一种快速评估系统规模与资源需求的粗略估算技术,常用于架构设计初期。 目标:帮助系统设计者“感知”系统负载、流量、存储、带宽等需求的数量级,以指导后续设计方案。
1. 场景指标
1.1 数据量单位
info
字节 (Byte):是基本单位,1 字节 = 8 位(bit)。
1 个 ASCII 字符 = 1 字节。
次方 (Power) | 近似值(Approximate) | 全称(Full name) | 简称(Short name) |
---|---|---|---|
2¹⁰ | ≈ 1 千(Thousand) | 1 千字节(Kilobyte) | 1 KB |
2²⁰ | ≈ 100 万(Million) | 1 兆字节(Megabyte) | 1 MB |
2³⁰ | ≈ 10 亿(Billion) | 1 千兆字节(Gigabyte) | 1 GB |
2⁴⁰ | ≈ 1 万亿(Trillion) | 1 太字节(Terabyte) | 1 TB |
2⁵⁰ | ≈ 1000 万亿(Quadrillion) | 1 拍字节(Petabyte) | 1 PB |
1.2 典型计算机操作耗时分级
CPU缓存 > 内存 > 网络 > 磁盘 > 跨洋通信:操作速度依次降低,耗时呈指数级上升。
操作名称 | 耗时(数量级) | 说明 |
---|---|---|
L1 缓存引用 | 0.5 纳秒 (ns) | 极快,CPU 最近一级缓存 |
分支预测失败 | 5 ns | 会导致 CPU pipeline 回退,耗时增加 |
L2 缓存引用 | 7 ns | 稍慢于 L1,但仍非常快 |
互斥锁加/解锁 | 100 ns | 用于线程同步的原语,耗时比缓存高 |
主内存访问 | 100 ns | 比缓存慢一个数量级 |
Zippy 压缩 1KB | 10 微秒 (µs) | 耗时微秒级,CPU 密集型操作 |
通过 1Gbps 网络传输 2KB 数据 | 20 µs | 网络开销开始显现 |
内存中顺序读取 1MB | 250 µs | 大块数据时内存吞吐限制开始显现 |
数据中心内网络往返延迟 | 500 µs | 一次 Ping 或 RPC 往返时间 |
磁盘寻道(机械硬盘) | 10 毫秒 (ms) | 随机访问,极慢 |
从网络读取 1MB 数据 | 10 ms | 顺序传输也较慢,受带宽与延迟影响 |
从磁盘顺序读取 1MB 数据 | 30 ms | 顺序访问较快但仍远慢于内存 |
跨洋往返一次(CA ↔ 荷兰) | 150 ms | 典型跨洲网络 RTT |
1.3 高可用
可用性等级 | 每天最多停机 | 每周最多停机 | 每月最多停机 | 每年最多停机 |
---|---|---|---|---|
99% | 14.40 分钟 | 1.68 小时 | 7.31 小时 | 3.65 天 |
99.99% | 8.64 秒 | 1.01 分钟 | 4.38 分钟 | 52.60 分钟 |
99.999% | 0.864 秒 | 6.05 秒 | 26.30 秒 | 5.26 分钟 |
99.9999% | 86.4 毫秒 | 0.604 秒 | 2.63 秒 | 31.56 秒 |
2. 常见估算维度
维度 | 说明 |
---|---|
QPS | 每秒请求数(Queries Per Second),衡量系统吞吐能力 |
存储容量 | 日数据量 × 保存天数 |
带宽 | 数据传输量/单位时间,决定网络需求 |
并发用户数 | 活跃用户中同时在线或发起请求的比例 |
热点数据 | 一段时间内频繁访问的数据,占总数据的比例 |
3. 常见假设公式与估算方法
- 默认值参考
假设维度 | 常用默认值/经验值 |
---|---|
每用户每日请求 | 10 ~ 100 次 |
并发比例 | 1% ~ 10% |
单次请求大小 | 1KB ~ 10KB(视接口数据而定) |
日活 DAU | 10% ~ 30% × 注册用户数 |
热数据占比 | 10% ~ 20% |
日志保留周期 | 7天 / 30天 / 180天 等 |
- 用户活跃度类指标
指标 | 全称 | 含义 | 举例 | 应用场景 |
---|---|---|---|---|
MAU | Monthly Active Users | 月活跃 用户数,30 天内至少登录过一次的用户 | 某社交平台月活 3 亿 | 衡量平台整体规模与渗透率 |
WAU | Weekly Active Users | 周活跃用户数,7 天内活跃用户 | 游戏产品周活 500 万 | 活跃粘性分析、运营活动判断 |
DAU | Daily Active Users | 日活跃用户数,日均使用平台的用户数量 | 电商平台日活 5000 万 | 衡量日常用户粘性、负载基线 |
DAU/MAU | 活跃比(粘性) | 日活 / 月活,反映用户活跃度与粘性 | 通常 20% ~ 40% | DAU 高于 MAU 的 1/3 则表示高粘性 |
- 系统负载类指标
指标 | 含义 | 举例 | 应用场景 |
---|---|---|---|
QPS | Queries Per Second,每秒处理请求数 | 5000 QPS 的 Web 接口 | 核心接口性能评估,负载测试基准 |
TPS | Transactions Per Second,每秒事务处理数 | 1000 TPS 的支付网关 | 交易系统吞吐能力设计 |
并发数(Concurrency) | 同一时刻系统同时处理的请求数 | 秒杀活动同时 10 万人在线 | 后端连接池、线程池配置依据 |
响应时间(Latency) | 每次请求的处理时间,常见 P95/P99 | P99 = 120ms 表示 99% 请求在 120ms 内完成 | 性能 SLA 指标,用户体验保障 |
- 存储类指标
指标 | 含义 | 举例 | 应用场景 |
---|---|---|---|
数据增长率 | 每日/每月产生数据量 | 每日新增日志 100GB | 数据仓库扩容、分区规划 |
热数据比例 | 高频访问数据占比 | 10% 数据占 90% 请求 | 缓存设计、冷热分层 |
存储保留期 | 数据保留多长时间 | 日志保留 90 天 | 存储成本、合规需求评估 |
- 网络与通信类指标
指标 | 含义 | 举例 | 应用场景 |
---|---|---|---|
带宽(Bandwidth) | 单位时间内传输数据总量(MBps、Gbps) | 视频系统出口带宽 5Gbps | CDN、负载均衡、数据上云 |
RTT(Round Trip Time) | 客户端与服务端一次请求-响应的总耗时 | CA 到荷兰 RTT ≈ 150ms | 网络延迟评估、跨地域架构设计 |
丢包率 | 网络中数据包丢失的比例 | 0.1% 被视为异常 | 实时通信、直播、音视频质量保障 |
- 传输速率易混淆
info
网络用 Gbps(位)为主,硬盘用 GB/s(字节)为主;传输时别忘 8 倍换算!
项目 | 5Gbps | 5GB/s |
---|---|---|
全称 | 5 Gigabits per second | 5 Gigabytes per second |
中文 | 每秒传输 5 吉比特 | 每秒传输 5 吉字节 |
单位换算 | 1 Byte = 8 bits | 1 GB = 1024 MB |
关系 | 5Gbps = 0.625GB/s | 5GB/s = 40Gbps |
场景 | 使用单位 | 举例 |
---|---|---|
网络带宽 | Gbps(位) | 光纤宽带常见 1Gbps、10Gbps |
存储传输 | GB/s(字节) | NVMe SSD 读写速度 3.5GB/s |
视频流量评估 | 两者都可 | 需要根据场景进行换算 |
3.1 用户上传图片
- 日活(DAU):100 万
- 每用户每天上传 2 张图,平均每张 200KB
- 日请求:100万 × 2 = 200万次
- 日数据量:200 万 × 200KB ≈ 400 GB
- 月存储:400 GB × 30 ≈ 12 TB
3.2 直播平台
-
目标 DAU:1000 万
-
高峰并发直播用户:50 万
-
单个直播 QPS:5 次交互(弹幕、点赞等)
-
峰值 QPS ≈ 50 万 × 5 = 250 万
-
单日新增视频片段 200TB
-
每段视频 20% 为高频访问,则 CDN 需缓存 40TB 热数据
3.3 Twitter 系统容量预估
项目 | 假设值 |
---|---|
月活跃用户(MAU) | 3 亿 |
每日活跃用户占比 | 50%(即 DAU = 1.5 亿) |
每用户每日发推数量 | 平均 2 条 |
含媒体的推文占比 | 10% |
数据保留时间 | 5 年 |
指标 | 估算值 | 公式 |
---|---|---|
日活跃用户 DAU | 1.5 亿 | |
推文平均 QPS | 3,500 | QPS = 150,000,000 × 2 ÷ (24 × 3600) ≈ 3,500 |
峰值 QPS | 7,000 | 假设峰值为 2 倍平均 |
每日媒体存储 | 30 TB | 1.5 亿 × 2 × 10% = 3000 万条 ,3000 万 × 1 MB = 30 TB/天 |
5 年累计媒体存储 | ~55 PB | 30 TB/天 × 365 × 5 ≈ 55 PB |
3.4 网络带宽估算
-
日活跃用户 DAU:10,000,000(1千万)
-
每人每天发帖数:10 条
-
每条平均大小:1KB
# 总数据量
10,000,000 用户 × 10 条/人 × 1KB = 100,000,000 KB = 100,000 MB = 100 GB/天
# 24 小时均匀分布
100 GB/day ≈ 800 Gbit/day
一天 = 86400 秒
800,000 Mbit ÷ 86400 ≈ 9.26 Mbps
# 高峰期估算(按10%时间内完成)
10% 的时间段内(约 2.4 小时 = 8640 秒)
800,000 Mbit ÷ 8640 ≈ 92.6 Mbps
场景 | 网络带宽需求 |
---|---|
📅 平均分布 | ≈ 9.26 Mbps |
🚀 高峰写入(10%时间内) | ≈ 92.6 Mbps |
🧱 再加 20% 预留(冗余、重试、元数据) | 建议准备 约 120 Mbps 的上行带宽 |